
const countApi = 'https://greasyfork.org/scripts/by-site.json'

function getCurrentTabUrl(callback) {
    // Query filter to be passed to chrome.tabs.query - see
    // https://developer.chrome.com/extensions/tabs#method-query
    var queryInfo = {
      active: true,
      currentWindow: true
    };
  
    chrome.tabs.query(queryInfo, (tabs) => {
      // chrome.tabs.query invokes the callback with a list of tabs that match the
      // query. When the popup is opened, there is certainly a window and at least
      // one tab, so we can safely assume that |tabs| is a non-empty array.
      // A window can only have one active tab at a time, so the array consists of
      // exactly one tab.
      var tab = tabs[0];

      // A tab is a plain object that provides information about the tab.
      // See https://developer.chrome.com/extensions/tabs#type-Tab
      var url = tab.url;
  
      // tab.url is only available if the "activeTab" permission is declared.
      // If you want to see the URL of other tabs (e.g. after removing active:true
      // from |queryInfo|), then the "tabs" permission is required to see their
      // "url" properties.
      console.assert(typeof url == 'string', 'tab.url should be a string');
  
      callback(url);
    });
  
    // Most methods of the Chrome extension APIs are asynchronous. This means that
    // you CANNOT do something like this:
    //
    // var url;
    // chrome.tabs.query(queryInfo, (tabs) => {
    //   url = tabs[0].url;
    // });
    // alert(url); // Shows "undefined", because chrome.tabs.query is async.
  }

  function getUrlHost(url) {
    var a = document.createElement('a');
    a.href = url;
    return a.hostname.split('.').splice(-2).join('.')
  }

  function changeBadge(data) {
    getCurrentTabUrl(function(url){
      let host =  getUrlHost(url)
      let count = data[host]
      count = count > 50 ? 50 : count
      sessionStorage.setItem('host',host)
      if(count) {
       chrome.browserAction.setBadgeText({
         text: count.toString()
       })
      }else {
        chrome.browserAction.setBadgeText({
          text: ''
        })
      }
   })
  }

fetch(countApi).then((r) => {
  r.json().then((data) => {
      console.log('count data loaded!')
      chrome.tabs.onUpdated.addListener(() => {
        changeBadge(data)
      })
      chrome.tabs.onActivated.addListener(() => {
        changeBadge(data)
      })
  })
})